package com.secsbrain.development.biz;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.plugins.Page;
import com.secsbrain.common.ResponseResult;
import com.secsbrain.development.biz.model.BranchMerge;
import com.secsbrain.development.biz.model.BranchParam;
import com.secsbrain.development.dal.model.BranchActionRecord;
import com.secsbrain.development.dal.model.BranchTypeRule;

/**
 * 分支相关服务
 *
 * @author zhaoyi
 */
public interface IBranchService {
    
    Map<Long, BranchTypeRule> getBranchTypeCache();
	
	/**
	 * 功能描述: <br>
	 * 查询分支类型规则
	 *
	 * @return
	 */
	ResponseResult<List<BranchTypeRule>> queryBranchTypeRule();

    /**
     * 功能描述: <br>
     * 创建分支
     *
     * @param branchParam  
     * @return  分支名称
     */
	ResponseResult<String> createBranch(BranchParam branchParam);
    
    /**
     * 功能描述: <br>
     * 合并分支
     *
     * @param branchMerge  
     * @return
     */
	ResponseResult<?> mergeBranch(BranchMerge branchMerge);
  
    /**
     * 功能描述: <br>
     * 查询分支记录
     *
     * @param start
     * @param limit
     * @param branchActionRecord
     * @return
     */
	ResponseResult<Page<BranchActionRecord>> queryBranchList(Integer start, Integer limit, BranchActionRecord branchActionRecord);
    
}